/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.actionsystem.gdp.dao;

import br.com.actionsystem.gdp.modelo.Atividade;
import br.com.actionsystem.gdp.modelo.Despesa;
import br.com.actionsystem.gdp.modelo.Historico;
import br.com.actionsystem.gdp.modelo.Receita;
import br.com.actionsystem.gdp.telas.Receitas;
import br.com.actionsystem.gdp.util.DaoException;
import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.Query;

/**
 *
 * @author Flavio
 */
public class AtividadeDao implements intAtividadeDao {

    EntityManager en;
    Query q;

        @Override
    public List<Despesa> listaDespesa() {
        en = ConexaoSingleton.getConexao();
        q = en.createQuery("from Despesa");
        return q.getResultList();
    }

    @Override
    public List<Receita> listaReceita() {
        en = ConexaoSingleton.getConexao();
        q = en.createQuery("from Receita");
        return q.getResultList();

    }

        @Override
    public void salvar(Atividade atividade) throws DaoException {
        try {
            en = ConexaoSingleton.getConexao();
            en.getTransaction().begin();
            en.persist(atividade);
            en.getTransaction().commit();
        } catch (Exception e) {
            en.getTransaction().rollback();
            throw new DaoException(e.getMessage());
        }

    }

            @Override
    public void delete(Atividade atividade) throws DaoException {
        try {
            en = ConexaoSingleton.getConexao();
            en.getTransaction().begin();
            Query q = en.createQuery("select h from Historico h where h.idAtividadeFK.idAtividade = :idAtividade ");
            q.setParameter("idAtividade", atividade.getIdAtividade());
            List<Historico> hist = q.getResultList();
            for(Historico h: hist){
            en.remove(h);
            }
            en.remove(atividade);
            en.getTransaction().commit();

        } catch (Exception e) {
            en.getTransaction().rollback();
            throw new DaoException("não foi possivel deletar está reserva ", e);
        }


    }
}



